package main

import (
	"flag"
)

// Args 命令行参数处理
type Args struct {
	Log     int
	Job     int
	Dl      bool
	Dp      bool
	Reverse bool
	Out     string
	URL     string
	Timeout int
}

// Init 初始化参数
func (a *Args) Init() bool {
	flag.IntVar(&a.Log, "l", 1, "显示日志级别，1最低级，9最高级")
	flag.BoolVar(&a.Dl, "dl", false, "仅调试索引页，与 dp、out 参数互斥")
	flag.BoolVar(&a.Dp, "dp", false, "仅调试内容页，与 dl、out 参数互斥")
	flag.StringVar(&a.Out, "o", "", "将结果保存到指定文件内，与 dl，dp 参数互斥，未设置该参数时，结果将显示到标准输出")
	flag.BoolVar(&a.Reverse, "r", false, "是否将获取的索引页链接反序抓取")
	flag.IntVar(&a.Job, "j", 4, "指定内容抓取的线程数")
	flag.IntVar(&a.Timeout, "t", 30, "指定下载网页的超时时间，单位秒")

	flag.Usage = a.usage

	flag.Parse()

	if flag.NArg() != 1 {
		a.URL = ""
		flag.Usage()
		return false
	}
	a.URL = flag.Arg(0)
	return true
}

func (a *Args) usage() {
	LogPrintf(0, `Html2Txt version: 0.2
用法: Html2Txt [-j <线程数>] [-r] [-t <超时秒数>] [-dl | -dp | -o <输出文件>] [-l <级别>] <索引页地址>
`)
	flag.PrintDefaults()
}
